home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d12 / cc04.arc / WC.C < prev    next >
Encoding:
C/C++ Source or Header  |  1986-03-15  |  1.1 KB  |  46 lines

  1. /* wc: count lines, words, chars */
  2.  
  3. #include <stdio.h>
  4.  
  5. main(argc, argv)
  6. int   argc;
  7. char  *argv[];
  8. {
  9.       int   c, i, inword;
  10.       FILE  *fp, *fopen();
  11.       long  linect, wordct, charct;
  12.       long  tlinect = 0, twordct = 0, tcharct = 0;
  13.  
  14.       i = 1;
  15.       fp = stdin;
  16.       printf(" lines   words   chars   file\n");
  17.       printf("======= ======= =======  =====\n");
  18.       do {
  19.      if (argc > 1 && (fp = fopen(argv[i], "r")) == NULL) {
  20.         fprintf(stderr, "                        wc: can't open %s\n", argv[i]);
  21.         continue;
  22.      }
  23.      linect = wordct = charct = inword = 0;
  24.      while ((c = getc(fp)) != EOF) {
  25.         charct++;
  26.         if (c == '\n')
  27.            linect++;
  28.         if (c == ' ' || c == '\t' || c == '\n')
  29.            inword = 0;
  30.         else if (inword == 0) {
  31.            inword = 1;
  32.            wordct++;
  33.         }
  34.      }
  35.      printf("%7ld %7ld %7ld  ", linect, wordct, charct);
  36.      printf(argc > 1 ? "%s\n" : "\n", argv[i]);
  37.      fclose(fp);
  38.      tlinect += linect;
  39.      twordct += wordct;
  40.      tcharct += charct;
  41.       } while (++i < argc);
  42.       if (argc > 2)
  43.      printf("%7ld %7ld %7ld  total\n", tlinect, twordct, tcharct);
  44.       exit(0);
  45. }
  46.